<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 顺序是锁定的
        // var arr =  [1,2,3];

        // var [a,,c] = arr;

        // // console.log(a,c);

        // var [c,,a] =arr;

        // console.log(a,c);


        // 设置默认值
        // let [a=111,b,c] =  [,2,3];

        // console.log(a,b,c);

        // 数组嵌套解构

        // let [a,b,[c,d,[e,f]]] = [1,2,[3,4,[5,6]]];

        // console.log(a,b,c,d,e,f);


        // ...  收集未被解构的元素 - 整合成一个数组
        // ... rest运算符 必须在解构赋值最后面使用

        // let [a,b,...c] = [1,2,3,4,5];

        // console.log(a,b);
        // console.log(c);



        // 复制数组

        // ES5
        // let arr = [1,2,3];
        // let arr2 = [].concat(arr);
        // arr[1]= 888;
        // console.log(arr2);
        // console.log(arr);
        // console.log(arr===arr2);


        // ES6 - 复制数组
        // let arr = [1,2,3];

        // let arr2 = [...arr];

        // console.log(arr2);

        // console.log(arr === arr2);



        // 这并不是复制，只是给数组起了一个新名字。
        // let arr = [1,2,3];

        // let arr2 = arr;

        // arr2[1]=666;

        // // console.log(arr2 === arr);

        // console.log(arr);






        // function fn({a,b=888}){
        //     console.log(a,b);
        // }

        // fn({a:12});



        // 数据结构 - 不传 - 在函数的解构赋值中就会报错
        // function fn([a=10,b=0]){
        //     console.log(a,b);
        // }

        // fn();


        // 函数的返回值 可以解构

        // function fn(){
        //     return [1,2,3];
        // }

        // let [a,b,c] = fn();

        // console.log(a,b,c);


        // 字符串解构

        // 会把字符串切成数组
        // let [a,b,...c] = '这个世界上没有完美的人类，所以，人无法自己一个人活著';

        // console.log(a,b,c);



        // 数值 和boolean值 解构
        // let n = new Number('1000')

        // console.log(n);

        // let n2 = 1001

        // console.log(n2);

        // let {toString} = n2;

        // console.log(toString);

        // let {toString,valueOf} = new Number('1000');

        // console.log(toString,valueOf);


        // let bool = true;

        // let {toString} = bool;

        // console.log(toString);















    </script>
</body>
</html>